Multi-Protocol Label Switching (MPLS) is a packet-forwarding technology that uses labels to make data forwarding decisions. Each MPLS label is defined by a particular MPLS label value. MPLS labels having an MPLS label value of 3 are of particular importance to the discussions herein. More specifically, a MPLS label having a MPLS label value of 3 is a MPLS Implicit NULL label.
In an MPLS router, processing of an incoming implicit NULL packet (i.e., a packet having a MPLS label value of 3) requires updating different Layer 2 headers before transmitting the packet out of the router based on what is carried as the Layer 2 payload. Typical implementation in the distributed architecture of a router requires parsing the packet twice, first on ingress processing module and second on egress processing module.
Existing systems use separate hardware assist or a Field Programmable Gate Array (FPGA) module to perform update of the Layer 2 header. Such Layer 2 header update is performed by re-parsing the packet in the egress direction. However, hardware implementation is costly. Alternately, in a network processor based implementation, an egress packet parsing module can be implemented to update the Layer 2 header appropriately. However, this still incurs extra expense in the form of using extra packet parsing cycles in the network processor, thereby lowering the overall performance of the router.
Therefore, handling of received Implicit Null packets in a manner that precludes the need for re-parsing of such packets in the egress direction would be advantageous, desirable and useful.